Шаг 407 - Отбор по нескольким субконто – Очень не явная ошибка.

В продолжение шагов –
Шаг 388 - Отбор по нескольким субконто.
Шаг 389 - Отбор по нескольким субконто – дальше.

В данных шагах мы рассмотрели общие принципы выборки по нескольким субконто. Но в реализации шага есть одна не точность а точнее ошибка. Она возникнет если один и тот же материал (одно и то же субконто, один и тот же элемент справочника будет числиться у двух сотрудников). Уточню, как это может произойти. Вы купили два одинаковых телевизора и дали их по одному в подотчет двум сотрудникам. Так вот если вы воспользуетесь кодом из шага Шаг 389 - Отбор по нескольким субконто – дальше то увидите только один телевизор у одного сотрудника, хотя на карточке счета все будет в порядке. Смотрите

Итог.ВыбратьСубконто(1);

Пока Итог.ПолучитьСубконто(1) = 1 цикл 
         Если  МестоХранения.Выбран()=1 Тогда                      
              Если Итог.Субконто(2)= МестоХранения Тогда
                     Т.ВывестиСекцию("Секция_2");
               КонецЕсли;     
         Иначе
                Т.ВывестиСекцию("Секция_2");
         КонецЕсли;
КонецЦикла;      

Первое субконто у нас материала. Мы смотрим второе субконто и сравниваем его с заданными параметрами( то есть сотрудником). Мы получим первого сотрудника и пойдем дальше. Но к нему есть и второй. Но вы нечего не увидите когда будет второй. Для того что бы убедиться что второго сотрудника нет нужно перебрать все субконто.

	Итог.ВыбратьСубконто(2);
	Пока Итог.ПолучитьСубконто(2) = 1 цикл
		Если Сотрудник=Итог.Субконто(2) Тогда
			ПечатьСекции();	                     
		КонецЕсли;
	КонецЦикла;		

Видите разницу ? Нужно перебрать все субконто второго уровня. То есть общая схема такая.

407_1.gif (4027 b)

Выбирая субконто первого уровня мы можем пройти по конкретным именам. Получив конкретное субконто мы опять можем выбраться все субконто связанные с ним но уже второго уровня. И опять нужно будет идти по ним. То есть –
Связь между субконтами разного уровня – один ко многим.

Hosted by uCoz